home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1997 #1 / Amiga Plus CD - 1997 - No. 01.iso / pd / programmierung / tds / convsrc / phxass2msg.c < prev    next >
C/C++ Source or Header  |  1995-11-01  |  1KB  |  83 lines

  1. /* PhxAss2Msg.c */
  2.  
  3. #include <exec/types.h>
  4. #include <dos/stdio.h>
  5. #include <clib/dos_protos.h>
  6.  
  7. #include <stdio.h>
  8. #include <string.h>
  9.  
  10. static UBYTE version[] = "$VER: PhxAss2Msg 1.00 (03.02.94)";
  11.  
  12. struct ErrorMsg {
  13.   BOOL warn;
  14.   LONG row,col;
  15.   UBYTE fileName[256];
  16.   UBYTE errStr[256];
  17. };
  18.  
  19.  
  20. void 
  21. PrintMsg(struct ErrorMsg *msg)
  22. {
  23.   printf("<%s> %d %c <%s>\n",msg->fileName,msg->row,(msg->warn ? 'W' : 'E'),msg->errStr);
  24. }
  25.  
  26.  
  27. /*
  28. PhxAss MC680x0/68851/6888x Macro Assembler V3.30
  29.  
  30.         cippo   #100,d0
  31. 23 Unknown directive
  32.  in line 2 (= line 2 of test.asm)
  33.  
  34. Pass 2
  35.         cippo   #100,d0
  36. 23 Unknown directive
  37.  in line 2 (= line 2 of test.asm)
  38.  
  39. */
  40.  
  41. BOOL
  42. ConvertMsg(struct ErrorMsg *msg)
  43. {
  44. UBYTE line[256],*scan;
  45.  
  46.   msg->errStr[0] = 0;
  47.   while (ReadLn(line,255)) {
  48.     if (scan = strstr(line,"(= line")) {
  49.       if (sscanf(scan,"(= line %d of %[^)])",&msg->row,msg->fileName) == 2) {
  50.         msg->warn = FALSE;
  51.         msg->col = 0;
  52.         return(TRUE);
  53.       }
  54.     }
  55.     else {
  56.       UBYTE *src,*dest;
  57.       
  58.       src = line;
  59.       dest = msg->errStr;
  60.       while (*src != '\n') {
  61.         if (*src >= ' ')
  62.           *dest++ = *src;
  63.         src++;
  64.       }
  65.       *dest = 0;
  66.     }
  67.   }
  68.   return(FALSE);
  69. }
  70.  
  71.  
  72. int
  73. main(int argc,UBYTE *argv[])
  74. {
  75. struct ErrorMsg errMsg;
  76.  
  77.   while (ConvertMsg(&errMsg))
  78.     PrintMsg(&errMsg);
  79.  
  80.   return(0);
  81. }
  82.  
  83.